Device localization and environment reconstruction are two key components for several applications such as augmented reality, virtual reality, robotics and unmanned aerial vehicle. Both of these components are accomplished by software running in multi-threads style to achieve real time performance.
During execution of the software, a huge amount of data is generated and shared between different CPU threads. Examples of the data shared includes, image sensor input. motion sensor input, processed results of raw input, 3d structure estimation, position and orientation estimation.
A fundamental requirement of the aforementioned applications in real time is computational capacity. However, the computational capacity is limited and consequently is critical to overcome the limitation.
Traditional methods to share data between threads are performed by duplicating original data. Duplicating original data avoids the risk of simultaneously modifying the same memory data by multiple threads. However, this method is very computational and expensive. An alternate method allows only one thread to alternate the shared data. This method avoids the cost of duplicating data however it decreases the efficiency of the software.
In the light of the above discussion, there appears to be a need for an efficient method to share and manage data without affecting the original data.